package com.uniview.service;

import java.util.List;

import com.uniview.entity.po.ResourceRole;
import com.uniview.entity.po.Role;
import com.uniview.entity.po.UserRole;
import com.uniview.entity.vo.Pager;
import com.uniview.entity.vo.QueryBuilder;
import com.uniview.entity.vo.ResultMessage;

/**
 * 角色service接口
 * @author Leiqingtian
 *
 */
public interface RoleService {
	
	/**
	 * 新增角色
	 * @param role
	 * @return
	 */
	public int saveRole(Role role);
	
	/**
	 * 添加用户授权
	 * @param ur
	 * @return
	 */
	public int addUserRole(UserRole ur);
	
	/**
	 * 修改用户
	 * @param role
	 * @return
	 */
	public boolean updateRole(Role role);
	
	
	/**
	 * 删除用户
	 * @param rId
	 * @return
	 */
	public boolean deleteRole(int rId);
	
	/**
	 * 根据id获取角色信息
	 * @param roleId
	 * @return
	 * @throws Exception
	 */
	public Role findRoleById(int roleId);
	
	/**
	 * 移除用户授权
	 * @param users
	 * @return
	 */
	public boolean deleteUserRole(int[] users);
	
	/**
	 * 查找所有的角色
	 * @return
	 */
	public List<Role> findAllRole();
	
	/**
	 * 分页查找角色
	 * @param queryBuilder
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	public Pager<Role> findRoleByPager(QueryBuilder queryBuilder,int pageSize,int pageNo);
	
	/**
	 * 获取所有的记录数
	 * @return
	 */
	public Long getTotalRow();
	
	/**
	 * 查找角色授权的用户
	 * @param rId  角色id
	 * @return
	 */
	public List<UserRole> findUserRoleByRId(int rId);
	
	/**
	 * 分页查找角色授权的用户
	 * @param queryBuilder
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	public Pager<UserRole> findUserRoleByPager(QueryBuilder queryBuilder ,int pageSize,int pageNo);
	
	/**
	 * 获取授权用户的总数
	 * @return
	 */
	public Long getUserRoleCounts();
	
	public ResultMessage saveResoucreRole(List<ResourceRole> list, int roleId);
	
	/**
	 * 保存用户授权关联
	 * @param list
	 * @return
	 */
	public boolean saveUserRole(List<UserRole> list);
	
	/**
	 * 检查成员是否存在
	 * @param userId
	 * @param labelsId
	 * @return
	 * @throws Exception
	 */
	public boolean checkUserRole (String userId);
	
	
	/**
	 * 根据登陆用户查询相应的授权资源
	 * @param userId
	 * @return
	 * @throws Exception
	 */
	public List<ResourceRole> findReousceRoleByUserId(String userId);
	
	/**
	 * 查找员工对应的角色资源
	 * @param workNo
	 * @param roleId
	 * @return
	 */
	public UserRole findRecouseRoleByWorkNo(String workNo,int roleId);
}
